PostgreSQL pg_profile
1 背景知识
pg_profile 基于 PostgreSQL 标准视图和其他 PostgreSQL 的扩展进行统计信息的收集。通过捕获数据库中被任意服务器进程执行的命令、收集关于表和索引访问的统计信息、监控对块读写次数、对用户定义函数使用的跟踪等四个方面来进行性能分析汇总展示。它类似于 Oracle AWR 架构,指定时间间隔生成快照,并提供 html
文档进行性能分析。
pg_profile 只使用 PLSQL 编写而成的,不需要任何外部动态库和软件。
1.1 先决条件
使用 pg_profile 扩展之前,还需要安装 pg_stat_statements 和 pg_stat_kcache 插件,用于对操作系统和 SQL 语句方面进行性能分析的统计信息的收集。
如果想要远程收集性能的统计信息还需要安装 dblink 插件。
1.2 性能报告的存储位置
pg_profile 会创建一个用于存放统计信息的模式。通过 take_sample()
函数获取统计信息,并存储此模式下。
pg_profile 还可以定期采样,保留一定时间范围内的性能报告。还可以对两个性能报告加以对比,以确定性能问题发生的时间段。
1.3 性能采集时的注意事项
为了更好体现系统的瓶颈请执行完 PostgreSQL BenchMarksql 6.0 性能测试 之后再采集具体的性能报告。
每次收集统计信息时,都会调用 pg_stat_statements_reset 函数 ,确保因为 pg_stat_statements.max (integer) 参数的限制导致丢失一些关键语句。
2 pg_profile 实战
PostgreSQL pg_profile 安装与配置
PostgreSQL pg_profile 参数
PostgreSQL pg_profile 函数
PostgreSQL pg_profile 配置服务器连接
PostgreSQL pg_profile 收集快照
PostgreSQL pg_profile 收集子快照
PostgreSQL pg_profile 基线
PostgreSQL pg_profile 报告
PostgreSQL pg_profile 数据导入和导出
PostgreSQL pg_profile 报告解读与优化
3 参考连接
GitHub - zubkov-andrei/pg_profile: Postgres historic workload reports